package day13;

import java.io.*;
import java.util.*;

/**
 * @author Xiao
 * @date 2021/8/4
 */
public class Test04 {
    /**
     * 4. 键盘录入一个整数：1代表登录，2代表注册用户。
     * 		当输入1：登录的时候，提示键盘录入用户名和密码，然后当前项目下的user.txt文件中找是否有对应的用户名密码。
     * 			    如果键盘录入的用户名密码在user.txt中存在，则提示登录成功。否则登录失败
     * 		当输入2：注册的时候，提示输入用户名和密码。
     * 			    如果user.txt中已经存在输入的用户名，提示用户名已经存在。
     * 			    如果user.txt中不存在输入的用户名，将用户名和密码保存到user.txt中，提示注册成功。
     */
    public static void main(String[] args) throws IOException{
        Scanner sc = new Scanner(System.in);
        System.out.println("---欢迎来的学生管理系统---");
        System.out.println("1.用户登陆");
        System.out.println("2.注册用户");
        System.out.println("请输入您的选项：");
        while (true) {
            String choice = sc.nextLine();
            switch (choice) {
                case "1":
                    landing(sc);
                    return;
                case "2":
                    register(sc);
                   return;
                default:
                    System.out.println("您输入的选项不存在，请重新输入：");
                    break;
            }
        }
    }

    /**登陆方法*/
    private static void landing(Scanner sc) throws IOException {
        HashMap<String, String> hm = readUser();
        System.out.println("请输入用户名：");
        String username = sc.nextLine();
        System.out.println("请输入密码：");
        String password = sc.nextLine();
        for (Map.Entry<String, String> entry : hm.entrySet()) {
            boolean result = username.equals(entry.getKey()) && password.equals(entry.getValue());
            if (result) {
                System.out.println("登陆成功！");
                return;
            }
        }
        System.out.println("登录失败。");
    }

    /**注册方法*/
    private static void register(Scanner sc) throws IOException {
        HashMap<String, String> hm = readUser();
        System.out.println("请输入用户名：");
        String username = sc.nextLine();
        System.out.println("请输入密码：");
        String password = sc.nextLine();
        for (Map.Entry<String, String> entry : hm.entrySet()) {
            boolean result = username.equals(entry.getKey());
            if (result) {
                System.out.println("注册失败，您输入的用户名已存在。");
                return;
            }
        }
        hm.put(username,password);
        updateUser(hm);
        System.out.println("注册成功。");
    }

    /**获取文件中的用户名和密码的方法*/
    private static HashMap<String, String> readUser() throws IOException {
        HashMap<String, String> hm = new LinkedHashMap<>();
        BufferedReader br = new BufferedReader(new FileReader(
                "homework\\src\\day13\\user.txt"));
        String s;
        while ((s = br.readLine()) != null) {
            hm.put(s.split(",")[0], s.split(",")[1]);
        }
        br.close();
        return hm;
    }

    /**更新文件中的用户名和密码的方法*/
    private static void updateUser(HashMap<String, String> hm) throws IOException{
        BufferedWriter bw = new BufferedWriter(new FileWriter(
                "homework\\src\\day13\\user.txt"));
        for (Map.Entry<String, String> entry : hm.entrySet()) {
            bw.write(entry.getKey() + "," + entry.getValue());
            bw.newLine();
        }
        bw.flush();
        bw.close();
    }
}
